草庐IT

linux - 如何从 bash 将源代码上传到 Arduino?

现在我正在使用标准的ArduinoIDE1.0.1。但我发现IDE本身很笨拙,而且我自己在其他编辑器中编辑代码,只需将其复制粘贴到IDE中并将其上传到我的Arduino。我真的不喜欢这个工作流程。所以我想知道:是否有其他方式最多可以通过命令行部署Arduino项目?基本上,我正在寻找一种方法来从bash运行类似arduinodeploy/path/to/project/dev/ttyUSB0的东西。 最佳答案 您需要一个名为avrdude的程序来将二进制文件上传到您的目标,并根据您的设置和目标修改参数:mcu=atmega8f_cp

linux - 为什么 `read -t` 在 RHEL 上的 bash 中没有超时?

为什么read-t在RHEL5或RHEL6上从管道读取时不会超时?这是我的示例,它不会在我的RHEL机器上从管道读取时超时:tail-flogfile.log|grep'something'|read-t3variable如果我是正确的,read-t3应该在3秒后超时吗?非常感谢。克里斯GNUbash,version4.1.2(1)-release(x86_64-redhat-linux-gnu) 最佳答案 chepner给出的解决方案应该可行。为什么您的版本不是这样的解释很简单:当您构建像您这样的管道时,数据从左到右流过管道。但是

linux - ". filename"从/bin/sh 运行时找不到文件,从/bin/bash 运行;为什么?

我的简单脚本是这样的:#!/bin/shDEF=.file_name_with_a_leading_dot.sh.${DEF}注意第一行的/bin/sh。当我运行那个简单的脚本时,我收到一个错误,指出找不到该文件。但是,如果我将该顶行更改为#!/bin/bash,那么脚本会在当前目录中找到该文件。但是,在我的UbuntuLinux笔记本电脑上,我看到/bin/sh是/bin/bash的符号链接(symboliclink)。那么,为什么我的脚本表现不同?此外,我可以像这样运行脚本:/bin/bash./script.sh没关系。那么,我错过了什么? 最佳答案

linux - 比较 bash 脚本中的 md5 总和

我正在尝试使用md5sum比较bash脚本中的两个文件。目标是使用一个文件的.md5来检查另一个文件的md5sum。我的谷歌搜索关于如何以正确的方式做到这一点并没有向我展示我是如何做到这一点的。发送电子邮件如您所料。现在我试图让它在失败而不是成功时发送电子邮件。也许会列出从.md5文件接收到的结果以及损坏文件的实际md5sum。我最终会解决这个问题,但这有点令人困惑,因为我试图弄清楚我哪里出了问题。Shellcheck表明代码看起来不错,但我没有得到预期的结果。我检查了一些StackOverflow链接以查看是否可以使用:OneTwo这是我的bash脚本的原始形式的内容:#!/bin/

linux - 您如何向 bash 请求当前选项?

我正在使用许多由bash脚本和其他工具构建的系统。通常,我认为使用-e、-u和-opipefail选项来捕获错误情况并防止意外行为是一种很好的做法。但是,一些第三方库(我可以更改源代码)不这样做,并且不喜欢将变量测试更改为与-u一起存在。其中的脚本很可能是来源而不是执行。所以我想做的是在其中一些中,设置一组更宽松的选项,然后恢复更严格的选项。由于有问题的脚本被许多用户使用,其中一些人也遇到了同样的问题,我想将此更改放入第三方脚本即:set+e+u+opipefail#dostufflikeif[-n"$_UNSET_VAR"];thencpfi我正在寻找保存和恢复这些原件的方法。

linux - bash内置函数bash源代码

如何找到内置bash函数的源代码?我知道这是一个函数:$type-tMY_APPfunction我看到它的代码:typeMY_APPcode问题是:它存储在哪里?如何修改? 最佳答案 你可以这样做:#Turnondebug$shopt-sextdebug#Printoutthefunction'sname,linenumberandfilewhereitwassourcedfrom$declare-Fmy_functionmy_function46/home/dogbane/.bash/.bash_functions#Turnoff

mysql - Bash 脚本 Mysql 警告 : Using a password on the command line interface can be insecure

您好,我有一个脚本可以对一些mysql数据库进行分区。我们正在从5.5升级到5.6。在测试脚本时,我注意到新的5.6版本的mysql返回Warning:Usingapasswordonthecommandlineinterfacecanbeinsecure.解决此问题的最佳方法是什么?我读到一个解决方法是2>/dev/null但我将无法获得退出代码或任何错误,如果它们发生的话。有没有其他方法可以做到这一点。这是有问题的代码行:MYSQL_RESULT=`echo"SETsql_log_bin=0;SET@pdb='$DB',@ptable='$table';CALLmaintenanc

linux -/etc/profile 中的 Bash 语法

我刚刚在我的/etc/profile中注意到这一行,我想知道这if意味着什么以及它何时为真。if["${-#*i}"!="$-"];theni迭代多个*.sh文件。很抱歉,如果这是一个愚蠢的问题,但正如您可以想象的那样,在Google中主要寻找符号确实不是一种选择。谢谢! 最佳答案 来自联机帮助页的OPTIONS部分:-iIfthe-ioptionispresent,theshellisinteractive.来自联机帮助页的特殊参数部分:-Expandstothecurrentoptionflagsasspecifieduponi

linux - Bash:多重重定向

在脚本的早期,我看到了这个:exec3>&2之后:{$app$conf_file&>$app_log_file&}1>&32>&1我对此的理解是这样的:创建fd3重定向fd3输出到stderr(在应用程序执行时)将stdout重定向到fd3,然后将stderr重定向到stdout这不是某种疯狂的循环吗?3stderrstdout3>等?我特别关心这一行的意图/含义,因为我想开始使用这个脚本和valgrind运行一些应用程序。我希望看到valgrind的输出散布在应用程序的日志语句中,因此我希望stderr的默认输出被上面令人困惑的行捕获。然而,在导致我想使用valgrind的一些崩溃中

linux - 在 Windows 上的 Ubuntu 上的 Bash 上设置 $PATH 的问题(Linux 子系统)

我正在使用“Windows上Ubuntu上的Bash”(Linux子系统)并想将Terraform添加到我的$PATH中。由于无法通过apt-get安装Terraform,我执行了以下步骤:导航到我想安装Terraform的目录:cd/usr/local在上面的路径中,我使用wget下载了Terraform:wgethttps://releases.hashicorp.com/terraform/0.9.8/terraform_0.9.8_linux_amd64.zipTerraform成功解压缩!当我在VIM中打开文件时一切正常:解压terraform_0.9.8_linux_amd